/**
 * 小说站点信息
 * */

let $table = $('#website-table'),
    $remove = $('#remove'),
    selections = [],
    key = 'Id';

let pageNumber = 1, pageSize = 10;
let pageListUrl = "/Home/PageList";
let circleModalId = "circleModal", $circleModal = null; // 圆形进度条窗体及对象

$(function () {

    $table = $('#website-table'),
        $remove = $('#remove');

    $("#btnAdd").unbind('click').bind('click', function () {
        $("#editModelLabel").html("小说站点信息添加");
        $('#editModel').modal('toggle');
    });

    initTable();

    // 关键词查询
    $('input[name="search"]').bind('keydown', function (event) {
        if (event.keyCode == "13") {
            pageNumber = 1;
            refreshTable();
        }
    });

    // 搜索
    $('#btnSearch').unbind('click').bind('click', function () {
        pageNumber = 1;
        refreshTable();
    });

    // 清空查询条件
    $('#btnClear').unbind('click').bind('click', function () {
        $('#toolbar form')[0].reset();
        pageNumber = 1;
        refreshTable();
    });

});

// 刷新表格数据
function refreshTable() {
    $table.bootstrapTable({ url: pageListUrl });
    $table.bootstrapTable('refresh', { pageNumber: pageNumber, pageSize: pageSize });
}

// 初始化表
function initTable() {

    //先销毁表格
    $table.bootstrapTable('destroy');

    $table.bootstrapTable({
        height: getHeight(),
        method: 'get', // 请求方式（*）
        dataType: "json", // 数据类型
        url: pageListUrl, // 请求后台地址,
        toolbar: '#toolbar', //工具按钮用哪个容器
        striped: true, // 使表格带有条纹
        uniqueId: key, // 唯一标识
        idField: key, // 标识哪个字段为id主键
        pagination: true, // 在表格底部显示分页工具栏
        pageSize: pageSize, // 分页大小
        pageNumber: pageNumber, // 当前页码
        pageList: [10, 20, 50, 100, 200, 500],
        sidePagination: "server", //表格分页的位置
        //设置为undefined可以获取pageNumber，pageSize，searchText，sortName，sortOrder
        //设置为limit可以获取limit, offset, search, sort, order
        queryParamsType: "undefined",
        queryParams: function queryParams(params) { //设置查询参数
            var param = {
                pageNumber: params.pageNumber,
                pageSize: params.pageSize,
                title: $("input[name='search']").val()
                , startDate: $("input[name='startDate']").val()
                , endDate: $("input[name='endDate']").val()
            };
            pageNumber = params.pageNumber;
            return param;
        },
        columns: [
            [
                {
                    field: 'checked',
                    checkbox: true
                }, {
                    title: '序号',
                    field: 'RowNumber',
                    width: 60,
                    align: 'center',
                    formatter: function (value, row, index) {
                        var options = $table.bootstrapTable('getOptions');
                        return options.pageSize * (options.pageNumber - 1) + index + 1;
                    }
                }, {
                    title: '操作',
                    width: 90,
                    halign: 'center',
                    align: 'center',
                    events: operateEvents,
                    formatter: operateFormatter
                }, {
                    field: 'Name',
                    title: '站点名称',
                    width: 120,
                    halign: 'center',
                    align: 'left',
                    formatter: tipsFormatter
                }, {
                    field: 'WebUrl',
                    title: '站点地址',
                    width: 120,
                    halign: 'center',
                    align: 'left',
                    formatter: tipsFormatter
                }, {
                    field: 'AddressObject',
                    title: '地址对象',
                    width: 120,
                    halign: 'center',
                    align: 'left',
                    formatter: tipsFormatter
                }, {
                    field: 'AddressNext',
                    title: '下一页地址',
                    width: 120,
                    halign: 'center',
                    align: 'left',
                    formatter: tipsFormatter
                }, {
                    field: 'ContentObject',
                    title: '内容对象',
                    width: 120,
                    halign: 'center',
                    align: 'left',
                    formatter: tipsFormatter
                }, {
                    field: 'ContentNext',
                    title: '下一页内容',
                    width: 120,
                    halign: 'center',
                    align: 'left',
                    formatter: tipsFormatter
                }, {
                    field: 'Encoding',
                    title: '站点编码',
                    width: 120,
                    halign: 'center',
                    align: 'center',
                    formatter: tipsFormatter
                }, {
                    field: 'UrlCombineName',
                    title: '地址组合',
                    width: 135,
                    halign: 'center',
                    align: 'center',
                    formatter: tipsFormatter
                }, {
                    field: 'AnnotationTypeName',
                    title: '正文类型',
                    width: 120,
                    halign: 'center',
                    align: 'center',
                    formatter: tipsFormatter
                }, {
                    field: 'CreateTime',
                    title: '添加时间',
                    width: 105,
                    halign: 'center',
                    align: 'center',
                    formatter: function (value, row, index) {
                        return (value == null || value.length == 0) ? "" : value.toDateTimeString("yyyy-MM-dd hh:mm");
                    }
                }, {
                    field: 'UpdateTime',
                    title: '更新时间',
                    width: 105,
                    halign: 'center',
                    align: 'center',
                    formatter: function (value, row, index) {
                        return (value == null || value.length == 0) ? "" : value.toDateTimeString("yyyy-MM-dd hh:mm");
                    }
                }
            ]
        ],
        formatLoadingMessage: function () {
            return "请稍等，正在加载中...";
        },
        formatNoMatches: function () { //没有匹配的结果
            return '无符合条件的记录';
        }
    });

    $table.find("thead").addClass("table-dark");

    setTimeout(function () {
        $table.bootstrapTable('resetView');
        $('[data-toggle="tooltip"]').tooltip();
    }, 200);

    $table.on('check.bs.table uncheck.bs.table ' +
        'check-all.bs.table uncheck-all.bs.table', function () {
            $remove.prop('disabled', !$table.bootstrapTable('getSelections').length);

            // save your data, here just save the current page

            selections = getIdSelections();

            // push or splice the selections if you want to save all data selections

        });

    $remove.click(function () { // 批量删除
        var ids = getIdSelections();
        $remove.prop('disabled', true);
        BatchDelete(ids.toString()); // 批量删除
    });

    $(window).resize(function () {
        $table.bootstrapTable('resetView', {
            height: getHeight()
        });
    });
}

// 获取选择项
function getIdSelections() {
    return $.map($table.bootstrapTable('getSelections'), function (row) {
        return row[key];
    });
}

// 操作内容格式化
function operateFormatter(value, row, index) {
    let edit = ['<a class="edit" href="javascript:void(0)" title="修改小说站点信息">',
        '<i class="glyphicon glyphicon-edit"></i>',
        '</a>'];

    let remove = ['  <a class="remove" href="javascript:void(0)" title="删除小说站点信息">',
        '<i class="glyphicon glyphicon-remove"></i>',
        '</a>'];
    edit = edit.concat(remove);

    let detail = ['  <a class="detail" href="javascript:void(0)" title="小说管理">',
        '<i class="glyphicon glyphicon-th-list"></i>',
        '</a>'];
    edit = edit.concat(detail);

    return edit.join('');
}

// 操作事件响应
window.operateEvents = {
    'click .edit': function (e, value, row, index) {
        //alert('You click edit action, row: ' + JSON.stringify(row));

        //debugger;
        //console.info("编辑前获取行数据：");
        console.info(row);

        $("#Id").val(row.Id); // 站点ID
        $("#Name").val(row.Name); // 站点名称
        $("#WebUrl").val(row.WebUrl); // 站点地址
        $("#AddressObject").val(row.AddressObject); // 地址对象
        $("#AddressNext").val(row.AddressNext); // 下一页地址对象
        $("#ContentObject").val(row.ContentObject); // 内容对象
        $("#ContentNext").val(row.ContentNext); // 下一页内容对象
        $("#Encoding").val(row.Encoding); // 站点编码
        $("#UrlCombine").val(row.UrlCombine); // 地址是否需要组合：0-不需要；1-网站地址 + 章节地址；2-小说地址 + 章节地址；
        $("#AnnotationType").val(row.AnnotationType); // 正文类型：0-文本；1-HTML；
        $("#Valid").val(row.Valid); // 是否有效：0-否；1-是；
        $("#CreateTime").val(row.CreateTime); // 添加时间
        $("#UpdateTime").val(row.UpdateTime); // 更新时间

        $("#editModelLabel").html("小说站点信息修改");
        $('#editModel').modal('toggle');
    },
    'click .remove': function (e, value, row, index) {
        Delete(row[key]); // 删除行数据
    },
    'click .detail': function (e, value, row, index) {
        //alert('You click edit action, row: ' + JSON.stringify(row));

        Page("/Novel/Index?webId=" + row.Id + "&webName=" + encodeURIComponent(row.Name));

    }
};

/// <summary>
/// 物理删除数据
/// </summary>

function Delete(id) {
    if (confirm("您确定要删除该小说站点信息吗？")) {
        $.ajax({
            type: "POST",
            url: "/Home/Delete/" + id + "?rnd=" + (Math.random() * 10),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (rst) {
                //console.info(rst);
                if (rst && rst.success) {
                    refreshTable();
                    toastr.success(data.message, "成功");
                } else {
                    toastr.error(data.message, "失败");
                }
            }
        });
    }
}

/// <summary>
/// 批量物理删除
/// </summary>

function BatchDelete(ids) {
    if (confirm("您确定要批量删除这些小说站点信息吗？")) {
        $.ajax({
            type: "POST",
            url: "/Home/BatchDelete/" + ids + "?rnd=" + (Math.random() * 10),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (rst) {
                //console.info(rst);
                if (rst && rst.success) {
                    refreshTable();
                    toastr.success(data.message, "成功");
                } else {
                    toastr.error(data.message, "失败");
                }
            }
        });
    }
}

$(function () {

    $('#editModel').on('hidden.bs.modal', function () { // 关闭模态窗体事件
        $("#editModel form")[0].reset();
        $("#btnSave").prop("disabled", false); // 解除保存按钮禁用
        $("#editModel form input[type='hidden']").val("");
    });

    $("#btnSave").unbind("click").bind("click", function () { // 小说站点信息数据保存

        let txtId = $("#Id").val(); // 站点ID
        let txtName = $("#Name").val(); // 站点名称
        let txtWebUrl = $("#WebUrl").val(); // 站点地址
        let txtAddressObject = $("#AddressObject").val(); // 地址对象
        let txtAddressNext = $("#AddressNext").val(); // 下一页地址对象
        let txtContentObject = $("#ContentObject").val(); // 内容对象
        let txtContentNext = $("#ContentNext").val(); // 下一页内容对象
        let txtEncoding = $("#Encoding").val(); // 站点编码
        let txtUrlCombine = $("#UrlCombine").val(); // 地址是否需要组合：0-不需要；1-网站地址 + 章节地址；2-小说地址 + 章节地址；
        let txtAnnotationType = $("#AnnotationType").val(); // 正文类型：0-文本；1-HTML；
        let txtValid = $("#Valid").val(); // 是否有效：0-否；1-是；
        let txtCreateTime = $("#CreateTime").val(); // 添加时间
        let txtUpdateTime = $("#UpdateTime").val(); // 更新时间

        if (txtName == undefined || txtName.length == 0) {
            toastr.error('请填写站点名称名称！');
            $("#Name").focus();
            return;
        }

        if (txtUrlCombine == undefined || txtUrlCombine.length == 0) {
            txtUrlCombine = "0";
        }
        if (txtAnnotationType == undefined || txtAnnotationType.length == 0) {
            txtAnnotationType = "0";
        }
        if (txtValid == undefined || txtValid.length == 0) {
            txtValid = "0";
        }

        // 字符串输入超长处理

        if (txtEncoding && txtEncoding.length > 10) {
            toastr.error('站点编码超过设定长度10！');
            $("#Encoding").focus();
            return;
        }

        //$("#btnSave").prop("disabled", "disabled");

        // 字符串中异常字符处理
        if (txtName != undefined && txtName.length > 0) {
            txtName = txtName.replace(/'|\\|\"|\||>|<|\*|\?/g, ""); // 站点名称
        }
        if (txtWebUrl != undefined && txtWebUrl.length > 0) {
            txtWebUrl = txtWebUrl.replace(/'|\\|\"|\||>|<|\*|\?/g, ""); // 站点地址
        }
        // 对象数据可能包含单引号或者双引号，因此不能处理
        //if (txtAddressObject != undefined && txtAddressObject.length > 0) {
        //    txtAddressObject = txtAddressObject.replace(/'|\\|\"|\||>|<|\*|\?/g, ""); // 地址对象
        //}
        //if (txtContentNext != undefined && txtContentNext.length > 0) {
        //    txtContentNext = txtContentNext.replace(/'|\\|\"|\||>|<|\*|\?/g, ""); // 下一页内容
        //}
        //if (txtContentObject != undefined && txtContentObject.length > 0) {
        //    txtContentObject = txtContentObject.replace(/'|\\|\"|\||>|<|\*|\?/g, ""); // 内容对象
        //}
        if (txtEncoding != undefined && txtEncoding.length > 0) {
            txtEncoding = txtEncoding.replace(/'|\\|\"|\||>|<|\*|\?/g, ""); // 站点编码
        }

        let obj = {};
        obj.Id = txtId; // 站点ID
        obj.Name = txtName; // 站点名称
        obj.WebUrl = txtWebUrl; // 站点地址
        obj.AddressObject = txtAddressObject; // 地址对象
        obj.AddressNext = txtAddressNext; // 下一页地址对象
        obj.ContentObject = txtContentObject; // 内容对象
        obj.ContentNext = txtContentNext; // 下一页内容对象
        obj.Encoding = txtEncoding; // 站点编码
        obj.UrlCombine = txtUrlCombine; // 地址是否需要组合：0-不需要；1-网站地址 + 章节地址；2-小说地址 + 章节地址；
        obj.AnnotationType = txtAnnotationType; // 正文类型：0-文本；1-HTML；
        obj.Valid = txtValid; // 是否有效：0-否；1-是；
        obj.CreateTime = txtCreateTime; // 添加时间
        obj.UpdateTime = txtUpdateTime; // 更新时间

        //console.info(JSON.stringify(obj));

        $.ajax({
            type: "POST",
            url: "/Home/Save/?rnd=" + (Math.random() * 10),
            data: JSON.stringify(obj),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (rst) {
                //console.info(rst);
                if (rst && rst.success) {

                    refreshTable();

                    $("#editModel").modal("hide");
                    $("#btnSave").prop("disabled", "");
                } else {
                    toastr.error(rst.message, "失败");
                }
            }
        });
    });

});

